perm filename ALVINE.MAC[LSP,SYS]1 blob
sn#001386 filedate 1973-07-03 generic text, type T, neo UTF8
TITLE ALVINE ,SON OF,
P=14
MLON
INTERNAL ALVINE
ALVINE: INIT 17
SIXBIT /DSK/
0
HALT
ENTER NAME
HALT
OUTPUT [IOWD 1,LST ;OUTPUT LENGTH OF FILE
0]
OUTPUT LST
STATZ 740000
HALT
RELEASE
POPJ P,
LST: IOWD EDEND-EDX+1,EDXX
0
NAME: SIXBIT /LISP/
SIXBIT /ED/
0
0
0
VAR
LIT
EDXX:
PHASE 0
EDX: JRST ED(R)
JRST RD2(R) ;RETURN FOR BELL
JRST GRNDEF(R)
MESS: 0
CMER1: ASCII / ? /
MER7: ASCII /*UDI /
MER1: ASCII /*EDR /
MER2: ASCII /*EDN /
MER4: ASCII /*UBP /
MER5: ASCII /*IPF /
MER6: ASCII /*UBP /
MER3: ASCII /*NSM /
MER8: ASCII /*FNF /
LPNAME: ASCII / %LP /
RPNAME: ASCII / %RP /
DT: ASCII / %D /
LMBD: ASCII / LAMBDA /
PRG: ASCII /PROG /
LAMB=LMBD+1
LPS: ASCII / LPS /
RPS: ASCII / RPS /
BAL: ASCII / BAL /
PC: ASCII / % /
STR: ASCII /%STR /
PCL: ASCII /%%%L /
TRC: ASCII / TRACE /
DEF: ASCII / DEFPROP /
GRI: ASCII / GRINDEF /
SPR: ASCII / SPRINT /
ASCII /%DPSPRINT /
DPYSPR=.-1
VALU: ASCII / VALUE /
VALUE=VALU+1
FEXP: ASCII / FEXPR /
FEXPR=FEXP+1
EXPR: ASCII/EXPR /
FSUBA: ASCII / FSUBR /
FSUBR=FSUBA+1
SUBR: ASCII /SUBR /
GLS: ASCII /(FEXPR EXPR VALUE MACRO SPECIAL )/
FLO: ASCII / FLONUM /
FLONUM=FLO+1
FIX: ASCII / FIXNUM /
SETQ: ASCII /SETQ /
QUO: ASCII / QUOTE /
ASCII /NIL /
EXTERN NCONC,PRINT,READ,READP1,TYO,ATOM,PUTPROP,GETL
EXTERN XCONS,RATOM,APPEND,OUTC,EVAL,OUTPUT,TYO
EXTERN INC,INPUT,SET,GET,TERPRI,UNBOUND,MEMQ
EXTERN PRIN1,FLATSIZE,CHRCT,LENGTH,LAST,TYI
INTERN ED
P=14
A=1
B=2
C=3
AR1=4
AR2A=5
R=10
S=11
SP=17
F=15
T=6
QUOTE=QUO+1
FIXNUM=FIX+1
DEFPROP=DEF+1
GRINDEF=GRI+1
SPRENT=SPR+1
GLST=FLO-1
TRACE=TRC+1
NCONS=XCONS-1
EXTERNAL PSAV1
ED: PUSH P,A
RD1: MOVEI A,TTYI(R)
PUSHJ P,READP1
JUMPE A,RD2A(R)
MOVEM A,@J(R)
JRST RD1(R)
TTYI: ILDB A,J(R)
POPJ P,0
J: POINT 7,MESS(R)
RD2A: MOVE C,SUBR(R)
MOVEI B,SPRINT(R)
MOVE A,SPRENT(R)
PUSHJ P,PUTPROP
MOVEI B,DPSPR(R)
MOVE C,SUBR(R)
MOVE A,DPYSPR(R)
PUSHJ P,PUTPROP
RD2B: MOVE B,GLST(R)
MOVE A,PCL(R)
PUSHJ P,SET
MOVE B,[JRST EDN(R)](R)
MOVEM B,ED(R)
POP P,A
EDN: JUMPN A,FALSE(R)
MOVEM P,PSAV2#(R)
PUSH P,[0](R) ;%B
PUSH P,[0](R) ;SRCH STRNG
PUSH P,[0](R) ;%STR
PUSH P,[0](R) ;%1
PUSH P,[0](R) ;%2
PUSH P,[0](R) ;%REM
PUSH P,[0](R) ;%NEW
SETZM BK1#(R)
MOVE A,STR(R)
MOVE B,VALUE(R)
PUSHJ P,GET
JUMPE A,.+4(R)
HRRZ A,(A)
MOVEM A,-6(P)
MOVEM A,-4(P)
MOVE B,VALUE(R)
MOVE A,PCL(R)
PUSHJ P,GET
HRRZ A,(A)
MOVEM A,GLST(R)
MOVEM P,PSAV1
RD2:
PUSHJ P,TERPRI
RD3: SETZM OLDCH
PUSHJ P,TYI
CAIN A,"↑"
JRST UPARR(R)
CAIE A,12
CAIN A,15
JRST RD3(R)
CAIN A,175 ;ALTMODE
JRST RD3(R)
CAIN A,"G"
JRST ED1(R)
CAIN A,"P"
JRST ED2(R)
CAIN A,"Q"
JRST ED2X(R)
CAIN A,"B"
JRST ED5(R)
CAIN A,"W"
JRST ED14(R)
CAIN A,"A"
JRST ED4(R)
CAIN A,"V"
JRST ED13(R)
CAIN A,"U"
JRST ED16(R)
CAIN A,"F"
JRST ED9(R)
MOVEI B,1
MOVEM B,CNT#(R)
DSP1: CAIN A,"S"
JRST ED10(R)
CAIN A,"I"
JRST ED8(R)
CAIN A,"R"
JRST ED3(R)
CAIN A,"M"
JRST ED15(R)
CAIN A,"E"
JRST EDEX(R)
CAIN A,"D"
JRST EDDL(R)
CAIN A,">"
JRST ED11(R)
CAIN A,"<"
JRST ED12(R)
CAIN A,"C"
JRST SPC(R)
CAIG A,"9"
CAIGE A,"0"
JRST ER1(R)
JRST NMB(R)
ER1: MOVE A,CMER1(R)
PUSHJ P,PRINT
JRST RD2(R)
SPC: MOVE A,CNT(R) ;C - COUNT
MOVEM A,PCNT(R)
JRST RD2(R)
PCNT: 3
NMB: SETZM CNT(R)
NM1: SUBI A,"0"
MOVE B,CNT(R)
MULI B,12
ADD A,C
MOVEM A,CNT(R)
PUSHJ P,TYI
CAIG A,"9"
CAIGE A,"0"
JRST DSP1(R)
JRST NM1(R)
ERED1: MOVE A,MER7(R)
JRST ER1+1(R)
UPARR: SETZM PSAV1
MOVE P,PSAV2(R)
JRST FALSE(R)
ED1: PUSHJ P,READ ;G - GET
JUMPE A,RD2(R)
PUSH P,A
MOVE B,TRACE(R)
PUSHJ P,GET
JUMPE A,ED1D(R)
HRRZ A,(A)
MOVEM A,(P)
ED1D: MOVE A,(P)
MOVE B,GLST(R)
PUSHJ P,GETL
JUMPE A,ERED1(R)
HRRZ C,(A)
HLRZ A,(A)
CAME A,VALUE(R)
JRST ED1B(R)
HLRZ A,(C)
HRRZ A,(A)
PUSHJ P,NCONS
MOVE B,QUOTE(R)
PUSHJ P,XCONS
PUSHJ P,NCONS
POP P,B
PUSHJ P,XCONS
MOVE B,SETQ(R)
JRST ED1C(R)
ED1B: PUSHJ P,NCONS
HLRZ B,(C)
PUSHJ P,XCONS
POP P,B
PUSHJ P,XCONS
MOVE B,DEFPROP(R)
ED1C: PUSHJ P,XCONS
PUSHJ P,MKLPRP(R)
ED1A: MOVEM A,-4(P)
MOVEM A,-6(P)
SETZM BK1(R)
MOVE B,A
MOVE A,STR(R)
PUSHJ P,SET
JRST RD2(R)
ED2X: MOVE A,-4(P) ;Q -- PUT ON ORIGINAL NAME
HRRZ A,(A)
HRRZ A,(A)
HLRZ A,(A)
JRST ED2+1(R)
ED2: PUSHJ P,READ
PUSH P,A ;P -- PUT
MOVE B,TRACE(R)
PUSHJ P,GET
JUMPE A,ED2A(R)
HRRZ A,(A)
MOVEM A,(P)
ED2A: MOVE A,-5(P)
PUSHJ P,UNMK(R)
JUMPE A,RD2(R)
HRRZ B,(A)
POP P,C
HRLM C,(B)
PUSHJ P,EVAL
JRST RD2(R)
ED3A: SETZM -2(P)
JRST EDB(R)
ED3R: MOVE C,T
JUMPN C,ED3R2(R)
MOVE A,(P)
JRST ED1A(R)
ED3R2: CAME T,BK1(R)
JRST ED3R1(R)
MOVE B,(P)
MOVEM B,-6(P)
JRST ED3R3(R)
ED8A: SKIPE RSW#(R)
JRST ER1(R)
PUSHJ P,EDREAD(R)
MOVE B,-6(P)
ED85: PUSHJ P,.NCONC(R)
MOVEM A,-6(P)
SOSLE CNT(R)
JRST EDB1(R)
SKIPN BK1(R)
JRST ED1A(R)
HRRM A,@BK1(R)
JRST RD2(R)
EDB1: MOVE A,(P)
JRST EDB(R)
EDE1: HRRM A,-4(P)
JRST ED1A+2(R)
ED8C: SKIPE RSW(R)
JRST ER1(R)
PUSHJ P,EDREAD(R)
JRST ED1A(R)
ED8: TDZA C,C ;I - INSERT
ED3: SETOM C ;R - REPLACE
MOVEM C,RSW(R)
SETZM NEWFLG#(R)
PUSHJ P,EDREAD(R)
JUMPE A,ED8A(R)
MOVEM A,-3(P)
HLRZ A,(A)
CAMN A,PC(R)
JRST ED8C(R)
PUSHJ P,EDREAD(R)
JUMPN A,ED3A(R)
PUSHJ P,EDREAD(R)
MOVEM A,-2(P)
PUSHJ P,EDREAD(R)
EDB: MOVEM A,(P)
MOVEM A,LNEW#(R)
HRRZ A,(A)
JUMPN A,.-2(R)
HLRZ@ A,(P)
CAMN A,PC(R)
ED3N: SETOM NEWFLG(R)
MOVE A,-6(P)
MOVE B,-3(P)
MOVE T,BK1(R)
PUSHJ P,SRCH(R)
JUMPE A,ED33(R)
MOVE B,-2(P)
JUMPE B,ED31(R)
MOVEM T,BK2#(R)
PUSHJ P,SRCH(R)
JUMPE A,ED34(R)
MOVE T,BK2(R)
ED31: SKIPE NEWFLG(R)
JRST ED32(R)
HRRM@ A,LNEW(R)
ED34: MOVE C,BK3(R)
SKIPE RSW(R)
JRST ED3R(R)
ED3R1: MOVE B,(P)
ED3R3: HRRM B,@C
JRST RD2(R)
ED32: JUMPE T,ED1A(R)
HRRM A,@T
JRST RD2(R)
ED33: SKIPE -2(P)
JRST SER1(R)
SKIPN NEWFLG(R)
JRST ED34(R)
HRRZ T,(T)
MOVEM T,BK3(R)
JRST ED37(R)
ED4: MOVE A,-4(P) ;A - ALL
PUSH P,A
PUSHJ P,TERPRI
POP P,A
PUSHJ P,EDGRIN(R)
JRST RD2(R)
EDDL: MOVE A,-6(P) ;D - DELETE
MOVEM A,BK3(R)
HRRZ A,(A)
JUMPE A,EDDL2(R)
SOSLE CNT(R)
JRST EDDL+1(R)
EDDL1: PUSH P,A
PUSHJ P,PRINTC(R)
POP P,A
JRST ED85+1(R)
ED5: MOVE A,-4(P) ;B - BALANCED
PUSHJ P,PARSRCH(R)
CAMN A,B
JRST ED51(R)
PUSH P,B
ADDI A,MAGNO
PUSHJ P,PRINT
MOVE A,LPS(R)
PUSHJ P,PRIN1
POP P,A
ADDI A,MAGNO
PUSHJ P,PRINT
MOVE A,RPS(R)
PUSHJ P,PRIN1
JRST RD2(R)
ED51: MOVE A,BAL(R)
JRST ED51-2(R)
EDDL2: MOVEI A,07
PUSHJ P,TYO
SKIPN BK1(R)
JRST ER1(R)
MOVE A,-6(P)
MOVEM A,BK3(R)
MOVE A,-4(P)
HRRZ C,(A)
CAMN C,BK3(R)
JRST ED37B(R)
JUMPE C,RD2(R)
TDZA AR1,AR1
ED37: SETOM AR1
MOVE A,-4(P)
MOVEM A,BK2(R)
HRRZ A,(A)
HRRZ C,(A)
CAME C,BK3(R)
JRST .-4(R)
ED37A: HLRM A,(A)
JUMPN AR1,RD2(R)
MOVEM A,-6(P)
PUSHJ P,PRINTC(R)
MOVE A,BK2(R)
MOVEM A,BK1(R)
JRST RD2(R)
ED37B: HLRM A,(A)
JRST ED1A(R)
ED11: MOVE A,-6(P) ;> - RIGHT
MOVE B,CNT(R)
SKIPN B
MOVEI B,7777
MOVEM A,C
HRRZ A,(A)
JUMPE A,ED11A(R)
MOVEM A,-6(P)
MOVEM C,BK1(R)
SOJG B,.-5(R)
JRST ED11B(R)
ED11A: MOVEI A,07
PUSHJ P,TYO
JRST RD2(R)
ED11B:
PUSHJ P,PRINTC(R)
JRST RD2(R)
ED12: SETZM C ;< - LEFT
SKIPN CNT(R)
JRST ED12C(R)
MOVE A,-4(P)
ED12A: CAMN A,-6(P)
JRST ED12B(R)
AOS C
HRRZ A,(A)
JUMPN A,ED12A(R)
JRST ERR3(R)
ED12B: MOVE A,CNT(R)
SUBM A,C
SKIPL C
JRST ED12C(R)
MOVE A,-4(P)
MOVEM A,BK1(R)
HRRZ A,(A)
AOJL C,.-2(R)
MOVEM A,-6(P)
JRST ED12D(R)
ED12C: MOVEI A,07
PUSHJ P,TYO
MOVE A,-4(P)
MOVEM A,-6(P)
SETZM BK1(R)
ED12D: PUSHJ P,PRINTC(R)
JRST RD2(R)
ED14: MOVE A,-6(P) ;W - WHERE
JRST ED12D(R)
ERR3: MOVE A,MER1(R)
JRST ER1+1(R)
ED10: PUSHJ P,EDREAD(R) ;S - SEARCH
SKIPN A
MOVE A,-5(P)
MOVEM A,-5(P)
MOVE B,A
MOVE A,-6(P)
MOVE T,BK1(R)
ED10C: PUSHJ P,SRCH1(R)
JUMPE A,ED10B(R)
MOVEM A,-6(P)
MOVE B,BK3(R)
MOVEM B,BK1(R)
SOSG CNT(R)
JRST ED10D(R)
MOVE B,-5(P)
JRST ED10C(R)
ED10B: MOVEI A,07
PUSHJ P,TYO
ED10D: MOVE A,-6(P)
PUSHJ P,PRINTC(R)
JRST RD2(R)
;SRCH RETURNS END IN A
;SETS T AND BK3
;STARTS WITH STRING IN A
;AND SEARCH-STRING IN B
;STRING-1 IN T
;SRCH1 RETURNS 0 IN A IF NOT FOUND,SRCH CALL ERROR
SRCH1: TDZA AR2A,AR2A
SRCH: SETOM AR2A
MOVEM B,STRB#(R)
SR1: HLRZ AR1,(B)
HLRZ C,(A)
CAMN AR1,C
JRST SR2(R)
PUSHJ P,SRNUM(R)
MOVEM A,T
HRRZ A,(A)
JUMPN A,SR1+1(R)
SR3: SKIPN AR2A
POPJ P,
POP P,A
SER1: MOVE A,MER3(R)
JRST ER1+1(R)
SR2: MOVEM A,BK3#(R)
HRRZ A,(A)
HRRZ B,(B)
JUMPE A,SR4(R)
SKIPN B
POPJ P,
HLRZ C,(A)
HLRZ AR1,(B)
CAMN C,AR1
JRST SR2(R)
PUSHJ P,SRNUM(R)
MOVE T,BK3(R)
MOVE B,STRB(R)
JRST SR1(R)
SR4: JUMPN B,SR3(R)
POPJ P,
EDEX1: MOVE A,-7(P)
HLRZ B,(A)
CAMN B,LPNAME(R)
JRST ED15B(R)
CAME B,RPNAME(R)
CAMN B,DT(R)
JRST ED15A-1(R)
POPJ P,0
ED15: PUSHJ P,EDEX1(R) ;M - MATCH
ED15D: MOVEM A,B
HRRZ A,(A)
JUMPE A,ED15A(R)
MOVEM B,BK1(R)
MOVEM A,-6(P)
SOSLE CNT(R)
JRST ED15(R)
PUSHJ P,PRINTC(R)
JRST RD2(R)
ED15B: SETZM AR1
ED15C: AOS AR1
ED15E: HRRZ A,(A)
JUMPE A,ED15A-1(R)
HLRZ B,(A)
CAMN B,LPNAME(R)
JRST ED15C(R)
CAMN B,RPNAME(R)
SOJE AR1,ED15-1(R)
JRST ED15E(R)
POP P,A
ED15A: MOVEI A,07
PUSHJ P,TYO
JRST RD2(R)
ED13: MOVE A,-6(P) ;V - VOMIT
PUSHJ P,PARSRCH(R)
MOVE A,-6(P)
CAMGE B,AR1
JRST ED4+1(R)
HLRZ B,(A)
CAME B,LPNAME(R)
JRST ED4+1(R)
HRRZ@ A,-6(P)
MOVEM A,AR2A
PUSHJ P,UNMK1(R)
OPDEF CALLF [36B8]
CALLF 1,@DPYSPR(R)
JRST RD2(R)
DPSPR: MOVEI C,0
MOVEI B,2
PUSHJ P,SPRNT2(R)
JRST TERPRI
UNER1A:
UNER1B: MOVE A,MER2(R)
JRST EDGER+1(R)
MOVEM A,-6(P)
EDEX: PUSHJ P,EDEX1(R) ;E - EXPLUGE
HRRZ A,(A)
JUMPE A,ED15A(R)
SOSLE CNT(R)
JRST EDEX-1(R)
JRST EDDL1(R)
UNMK1: PUSHJ P,EDGET(R)
CAMN A,LPNAME(R)
JRST UN3(R)
CAMN A,RPNAME(R)
JRST UN2(R)
CAMN A,DT(R)
JRST UN1(R)
PUSH P,A
PUSHJ P,UNMK1(R)
POP P,B
PUSHJ P,XCONS
POPJ P,
UN1: PUSHJ P,EDGET(R)
CAMN A,LPNAME(R)
JRST UN4(R)
CAME A,RPNAME(R)
CAMN A,DT(R)
JRST UNER1A(R)
UN5: PUSH P,A
PUSHJ P,EDGET(R)
CAME A,RPNAME(R)
JRST UNER1B(R)
POP P,A
POPJ P,0
UN3: PUSHJ P,UNMK1(R)
PUSH P,A
PUSHJ P,UNMK1(R)
POP P,B
PUSHJ P,XCONS
POPJ P,
UN2: SETZM A
POPJ P,
UN4: PUSHJ P,UNMK1(R)
JRST UN5(R)
EDGET: SKIPN AR2A
JRST EDGER(R)
HLRZ A,(AR2A)
HRRZ AR2A,(AR2A)
POPJ P,
EDGER: MOVE A,MER4(R)
PUSHJ P,PRINT
MOVE P,PSAV(R)
SUB P,[XWD 2,2](R)
JRST RD2(R)
CNT1: 0
PRINTC: PUSH P,A
PUSHJ P,TERPRI
POP P,A
MOVE C,PCNT(R)
MOVEM C,CNT1(R)
JUMPE A,PRN3(R)
PRN1: PUSH P,A
SETZM AR1
HLRZ A,(A)
CAMN A,LPNAME(R)
MOVEI AR1,"("
CAMN A,RPNAME(R)
MOVEI AR1,")"
CAMN A,DT(R)
MOVEI AR1,"."
SKIPE AR1
JRST PRN2(R)
PUSHJ P,PRIN1
MOVEI AR1," "
PRN2: MOVE A,AR1
PUSHJ P,TYO
POP P,A
HRRZ A,(A)
SOSLE CNT1(R)
JUMPN A,PRN1(R)
PRN3: POPJ P,
ED9: PUSHJ P,READ ;F - FILE
PUSH P,A
PUSHJ P,READ
PUSH P,A
PUSHJ P,READ
PUSHJ P,NCONS
POP P,B
PUSHJ P,XCONS
PUSHJ P,OUTPUT
PUSHJ P,OUTC
MOVE A,(P)
PUSHJ P,ATOM
JUMPE A,ED9A(R)
MOVE B,VALUE(R)
MOVE A,(P)
PUSHJ P,GET
HRRZ A,(A)
JRST .+2(R)
ED9A: POP P,A
PUSHJ P,GRNDEF(R)
MOVEI A,0
MOVEI B,1
PUSHJ P,OUTC
JRST RD2(R)
EDGRIN: MOVEI C,7777
JRST PRN1-2(R)
PARSRCH: SETZB AR1,B
PAR1: HLRZ C,(A)
CAMN C,LPNAME(R)
AOS AR1
CAMN C,RPNAME(R)
AOS B
HRRZ A,(A)
JUMPN A,PAR1(R)
MOVE A,AR1
POPJ P,
MKLPRP1: PUSH P,[0](R) ;A
PUSH P,A ;X,B
PUSHJ P,ATOM
JUMPN A,MLP1(R)
MOVE A,LPNAME(R)
PUSHJ P,NCONS
MOVEM A,-1(P)
L1: HLRZ@ A,(P)
PUSHJ P,MKLPRP1(R)
MOVE B,A
MOVE A,-1(P)
PUSHJ P,.NCONC(R)
MOVEM A,-1(P)
HRRZ@ A,(P)
JUMPE A,MLP2(R)
PUSHJ P,ATOM
JUMPN A,MLP3(R)
HRRZ@ A,(P)
MOVEM A,(P)
JRST L1(R)
MLP1: POP P,A
PUSHJ P,NCONS
MOVE B,A
POP P,A
PUSHJ P,.NCONC(R)
POPJ P,0
MLP2: MOVE A,RPNAME(R)
PUSHJ P,NCONS
MLP4: POP P,B
MOVE B,A
POP P,A
JRST .NCONC(R)
MLP3: MOVE A,RPNAME(R)
PUSHJ P,NCONS
HRRZ@ B,(P)
PUSHJ P,XCONS
MOVE B,DT(R)
PUSHJ P,XCONS
JRST MLP4(R)
PSAV: 0
UNMK: MOVEM P,PSAV(R)
HLRZ B,(A)
CAME B,LPNAME(R)
JRST UNER1(R)
HRRZ A,(A)
MOVEM A,AR2A
PUSHJ P,UNMK1(R)
SKIPE AR2A
JRST UNER2(R)
POPJ P,
UNER1: MOVE A,MER5(R)
PUSHJ P,PRINT
MOVE P,PSAV1
JRST RD2(R)
UNER2: MOVE A,MER6(R)
JRST UNER1+1(R)
.NCONC: MOVNI 6,2
PUSH P,A
PUSH P,B
JRST NCONC
ED16: PUSHJ P,READ ;U - UNFILE
PUSH P,A
PUSHJ P,READ
PUSH P,A
PUSHJ P,READ
PUSHJ P,NCONS
POP P,B
PUSHJ P,XCONS
PUSHJ P,INPUT
PUSHJ P,INC
MOVE A,(P)
PUSHJ P,ATOM
JUMPE A,ED16A(R)
MOVE B,VALUE(R)
MOVE A,(P)
PUSHJ P,GET
HRRZ A,(A)
ED16D: MOVEM A,(P)
ED16A: PUSHJ P,READ
MOVE T,A
PUSHJ P,ATOM
JUMPN A,ED16A(R)
HRRZ A,(T)
HLRZ A,(A)
SKIPE B,(P)
PUSHJ P,MEMQ
JUMPE A,ED16A(R)
MOVE A,T
PUSHJ P,EVAL
SKIPE (P)
PUSHJ P,PRINT
JRST ED16A(R)
JRST ER1+1(R)
TT=7
D=12
SRNUM: CAIGE C,INUMIN ;NUMBER COMPARES
CAIL AR1,INUMIN
POPJ P,
HRRZ C,(C)
HLRZ TT,(C)
CAME TT,FIXNUM(R)
CAMN TT,FLONUM(R)
SKIPA D,(AR1)
POPJ P,0
HLRZ S,(D)
CAME TT,S
POPJ P,0
HRRZ C,(C)
HRRZ D,(D)
MOVE D,(D)
MOVE C,(C)
CAME D,C
POPJ P,0
POP P,TT
JRST SR2(R)
EXTERN OLDCH,LINL,CHCT
EDRD1: CLEARB A,...FLG(R)
POPJ P,0
...FLG: 0
EDREAD: SKIPE ...FLG(R)
JRST EDRD1(R)
PUSHJ P,READ1(R)
JUMPL A,.-1(R)
POPJ P,0
READ1: PUSHJ P,RATOM
JRST READ1A(R)
READ2: ADDI B,(R)
XCT EDTAB(B)
READ1A: PUSH P,A
PUSHJ P,READ1(R)
READ3: POP P,B
JUMPL A,READ1(R) ;RUBOUT
JRST XCONS
EDTAB: MOVE A,LPNAME(R) ;0 (
MOVE A,RPNAME(R) ;1 )
MOVE A,LPNAME(R) ;2 [
JRST READ4(R) ;3 ],$
JRST EDRD3(R) ;4 .
SKIP
SETOM A ;6 RUBOUT
POPJ P,
READ4: CAIN A,175
JRST FALSE(R) ;ALTMODE
MOVE A,RPNAME(R)
JRST READ1A(R)
EDRD5: SUB P,[XWD 2,2](R)
JRST EDRD32(R)
EDRD4: SUB P,[XWD 2,2](R)
JRST READ1(R)
EDRD3: PUSH P,DT(R)
PUSH P,[READ3](R)
ADDM R,(P)
EDRD32: PUSHJ P,RATOM
JRST READ1A(R) ;ATOM
CAIN A,177
JRST EDRD4(R) ;RUBOUT
CAIE A,"."
JRST READ2(R)
PUSH P,DT(R)
PUSH P,[READ3](R)
ADDM R,(P)
PUSHJ P,RATOM
JRST READ1A(R) ;ATOM
CAIN A,177
JRST EDRD5(R) ;RUBOUT
CAIE A,"."
JRST READ2(R)
SUB P,[XWD 4,4](R)
MOVEM A,...FLG(R)
FALSE: MOVEI A,0
CPOPJ: POPJ P,0
;GRINDEF AND FRIENDS
;THESE FUNCTIONS KNOW ABOUT INUMS
MAGNO=577777
INUMIN=400000
PANL: PUSH P,A
PUSHJ P,ATOM
JUMPN A,PNL3(R)
HRRZ@ A,(P)
PUSHJ P,ATOM
JUMPE A,PNL1(R)
PNL3: MOVEI A,15
EXCH A,(P)
JRST PNL2(R)
PNL1: HRRZ A,@(P)
HLRZ A,(A)
PUSHJ P,PANL(R)
EXCH A,(P)
HLRZ A,(A)
PNL2: PUSHJ P,FLATSIZE
SUBI A,MAGNO
POP P,B
ADD A,B
ADDI A,2
POPJ P,
HUNZ1: AOS C,-2(P)
JRST HUNZ3(R)
HUNZ2: MOVE A,(P)
PUSHJ P,FLATSIZE
SUBI A,MAGNO
ADD A,-2(P)
ADDI A,4
MOVE C,A
JRST HUNZ3(R)
HUNOZ: PUSH P,C
PUSH P,B
PUSH P,A
HLRZ S,(A)
HRRZ A,(A)
MOVEM A,(P)
JUMPE A,HUNZ1(R)
PUSHJ P,ATOM
JUMPN A,HUNZ2(R)
MOVEI C,0
HUNZ3: MOVE B,-1(P)
MOVE A,S
PUSHJ P,SPRNT2(R)
POP P,A
JUMPE A,HUNZ4(R)
PUSHJ P,ATOM
JUMPE A,HUNZ4(R)
MOVEI A," "
PUSHJ P,TYO
MOVEI A,"."
PUSHJ P,TYO
MOVEI A," "
PUSHJ P,TYO
HUNZ4: SUB P,[XWD 2,2](R)
EXIT: POPJ P,
GR1: 0
GRN1: POP P,B
HRRZ B,(B)
JUMPN B,GRN2(R)
POP P,A
SKIPE GR1(R)
JRST GRN4(R)
GRN5: HRRZ A,(A)
JUMPE A,TERPRI
GRNDEF: SETZM GR1(R)
PUSH P,A
MOVE B,TRACE(R)
HLRZ A,(A)
PUSHJ P,GET
JUMPE A,GRN2-1(R)
HLRZ@ AR1,(P)
HRRZ B,(AR1)
PUSH SP,B
HRRZ A,(A)
MOVE B,GLST(R)
PUSHJ P,GETL
HRRM A,(AR1)
HRRZ C,(A)
MOVEM C,GR1(R)
HLRZ D,D
HRRZ D,(D)
HRRZ D,(D)
HRRZ D,(D)
HRRM D,(C)
MOVE B,GLST(R)
GRN2: HLRZ@ A,(P)
PUSH P,B
HLRZ B,(B)
PUSHJ P,GET
JUMPE A,GRN1(R)
PUSH P,A
PUSHJ P,ATOM
JUMPN A,GRNFOO(R)
POP P,A
HRRZ B,(A)
CAIN B,UNBOUND
JRST GRN1(R)
PUSH P,A
GRNFOO: PUSHJ P,TERPRI
PUSHJ P,TERPRI
MOVEI A,"("
PUSHJ P,TYO
MOVE A,DEF+1(R)
PUSHJ P,PRIN1
MOVEI A," "
PUSHJ P,TYO
HLRZ@ A,-2(P)
PUSHJ P,PRIN1
MOVEI A," "
PUSHJ P,TYO
PUSHJ P,TERPRI
MOVEI C,0
MOVEI B,2
POP P,A
PUSHJ P,SPRNT2(R)
MOVEI A," "
PUSHJ P,TYO
PUSHJ P,TERPRI
MOVEI B,1
MOVEI C,1
HLRZ@ A,(P)
PUSHJ P,SPRNT2(R)
MOVEI A,")"
PUSHJ P,TYO
JRST GRN1(R)
GRN4: POP SP,B
HLRZ C,(A)
HRRM B,(C)
HRRZ C,GR1(R)
HLRM C,(C)
JRST GRN5(R)
TAB: SKIPN %%TBFLG#(R)
JRST TYO
MOVEI A,40
MOVEI B,10
PUSHJ P,TYO
SOJG B,.-1(R)
POPJ P,
PPOS: SUBI A,MAGNO
PUSHJ P,SPR1+1(R)
MOVEI A,0
POPJ P,
SPRINT: SUBI B,MAGNO
SUBI C,MAGNO
JRST SPRNT2(R)
SPR1: SOS A,-2(P)
PUSH P,A
PUSH P,A
CAIGE A,1
JRST PPL1(R)
MOVE A,LINL
SUB A,CHCT
CAMLE A,-1(P)
PPL1: PUSHJ P,TERPRI
PPL2: MOVE A,LINL
SUB A,CHCT
ADDI A,10
CAMLE A,-1(P)
JRST PPL3(R)
MOVEI A,11
PUSHJ P,TAB(R)
JRST PPL2(R)
PPL3: SUBI A,10
SUB A,-1(P)
MOVNM A,(P)
PPL4: SOSGE (P)
JRST PPL5(R)
MOVEI A," "
PUSHJ P,TYO
JRST PPL4(R)
PPL5: SUB P,[XWD 2,2](R)
POPJ P,
SPRNT2: PUSH P,AR2A
PUSH P,C
PUSH P,B
PUSH P,A
HRRZ A,LINL
MOVEM A,AR2A
SPR2: PUSHJ P,CHRCT
SUBI A,MAGNO
SUBI A,1(AR2A)
MOVNM A,A
CAMGE A,-1(P)
PUSHJ P,SPR1(R)
MOVE A,(P)
PUSHJ P,ATOM
JUMPN A,SPR3(R)
MOVE A,(P)
PUSHJ P,FLATSIZE
SUBI A,MAGNO
ADD A,-2(P)
MOVEM A,AR1
PUSHJ P,CHRCT
SUBI A,MAGNO
CAML AR1,A
JRST SPR4(R)
SPR3: POP P,A
MOVE AR2A,-2(P)
SUB P,[XWD 3,3](R)
JRST PRIN1
SPR4: MOVEI A,"("
PUSHJ P,TYO
MOVE A,(P)
PUSHJ P,LENGTH
SUBI A,MAGNO
CAIG A,1
JRST SPR5(R)
MOVE A,(P)
PUSHJ P,LAST
PUSH P,A
PUSHJ P,FLATSIZE
SUBI A,MAGNO
EXCH A,(P)
PUSHJ P,PANL(R)
SUB A,(P)
EXCH A,(P)
MOVE A,-1(P)
PUSHJ P,FLATSIZE
SUBI A,MAGNO
ADDM A,(P)
PUSHJ P,CHRCT
SUBI A,MAGNO
POP P,B
ADDI B,1
CAML B,A
JRST SPR5(R)
SPR41: HLRZ@ A,(P)
PUSHJ P,PRIN1
MOVEI A," "
PUSHJ P,TYO
HRRZ @A,(P)
HRRZ B,(A)
MOVEM A,(P)
JUMPN B,SPR41(R)
PUSHJ P,CHRCT
MOVEI B,-MAGNO(A)
MOVE C,-2(P)
MOVE A,(P)
PUSHJ P,HUNOZ(R)
SPREND: MOVEI A,")"
PUSHJ P,TYO
MOVEI A,0
SPND1: MOVE AR2A,-3(P)
SUB P,[XWD 4,4](R)
POPJ P,
SPR5:
MOVE A,(P)
PUSHJ P,LENGTH
SUBI A,MAGNO
CAIG A,2
JRST SPR6(R)
MOVE A,(P)
PUSHJ P,PANL(R)
MOVE AR1,A
PUSHJ P,CHRCT
SUBI A,MAGNO
CAMG A,AR1
JRST SPR6(R)
HLRZ@ A,(P)
PUSHJ P,PRIN1
PUSH P,[0](R)
CAMN A,PRG(R)
SETOM 0(P)
HLRZ@ A,-1(P)
MOVEI AR1,-5(AR2A)
CAME A,LAMB(R)
MOVEI AR1,2(AR2A)
PUSHJ P,CHRCT
SUBI A,MAGNO
SUB AR1,A
MOVEM AR1,-2(P)
SPRA: HRRZ@ A,-1(P)
HLRZ A,(A)
MOVE B,A
PUSHJ P,ATOM
JUMPE A,SPRA1(R)
MOVEI A," "
PUSHJ P,TYO
JUMPE B,SPRA1(R)
MOVNI B,5
SKIPN 0(P)
SPRA1: MOVEI B,0
ADD B,-2(P)
HRRZ@ A,-1(P)
MOVE C,-3(P)
PUSHJ P,HUNOZ(R)
JUMPE A,SPRA2(R)
HRRZ@ A,-1(P)
HRRZ A,(A)
SPRA3: PUSHJ P,PRIN1
POP P,A
JRST SPREND(R)
SPRA2: HRRZ@ A,-1(P)
MOVEM A,-1(P)
HRRZ A,(A)
JUMPE A,SPRA3+1(R)
PUSHJ P,CHRCT
SUBI A,MAGNO
SUBI A,1(AR2A)
MOVNM A,A
CAML A,-2(P)
PUSHJ P,TERPRI
JRST SPRA(R)
SPR6: PUSHJ P,CHRCT
SUBI A,MAGNO
SUBI A,1(AR2A)
MOVNM A,-1(P)
SPR6B: MOVE B,-1(P)
MOVE A,(P)
MOVE C,-2(P)
PUSHJ P,HUNOZ(R)
JUMPE A,SPR6A(R)
HRRZ@ A,(P)
JRST SPRA3A(R)
SPR6A: HRRZ@ A,(P)
JUMPE A,SPREND(R)
MOVEM A,(P)
PUSHJ P,TERPRI
JRST SPR6B(R)
SPRA3A: PUSHJ P,PRIN1
JRST SPREND(R)
VAR
LIT
EDEND:
DEPHASE
END